home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / lib / python2.4 / uu.pyc (.txt) < prev    next >
Python Compiled Bytecode  |  2005-10-18  |  4KB  |  186 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.4)
  3.  
  4. '''Implementation of the UUencode and UUdecode functions.
  5.  
  6. encode(in_file, out_file [,name, mode])
  7. decode(in_file [, out_file, mode])
  8. '''
  9. import binascii
  10. import os
  11. import sys
  12. from types import StringType
  13. __all__ = [
  14.     'Error',
  15.     'encode',
  16.     'decode']
  17.  
  18. class Error(Exception):
  19.     pass
  20.  
  21.  
  22. def encode(in_file, out_file, name = None, mode = None):
  23.     '''Uuencode file'''
  24.     if in_file == '-':
  25.         in_file = sys.stdin
  26.     elif isinstance(in_file, StringType):
  27.         if name is None:
  28.             name = os.path.basename(in_file)
  29.         
  30.         if mode is None:
  31.             
  32.             try:
  33.                 mode = os.stat(in_file).st_mode
  34.             except AttributeError:
  35.                 pass
  36.             except:
  37.                 None<EXCEPTION MATCH>AttributeError
  38.             
  39.  
  40.         None<EXCEPTION MATCH>AttributeError
  41.         in_file = open(in_file, 'rb')
  42.     
  43.     if out_file == '-':
  44.         out_file = sys.stdout
  45.     elif isinstance(out_file, StringType):
  46.         out_file = open(out_file, 'w')
  47.     
  48.     if name is None:
  49.         name = '-'
  50.     
  51.     if mode is None:
  52.         mode = 438
  53.     
  54.     out_file.write('begin %o %s\n' % (mode & 511, name))
  55.     str = in_file.read(45)
  56.     while len(str) > 0:
  57.         out_file.write(binascii.b2a_uu(str))
  58.         str = in_file.read(45)
  59.     out_file.write(' \nend\n')
  60.  
  61.  
  62. def decode(in_file, out_file = None, mode = None, quiet = 0):
  63.     '''Decode uuencoded file'''
  64.     if in_file == '-':
  65.         in_file = sys.stdin
  66.     elif isinstance(in_file, StringType):
  67.         in_file = open(in_file)
  68.     
  69.     while None:
  70.         hdr = in_file.readline()
  71.         if not hdr:
  72.             raise Error, 'No valid begin line found in input file'
  73.         
  74.         if hdr[:5] != 'begin':
  75.             continue
  76.         
  77.         hdrfields = hdr.split(' ', 2)
  78.         if len(hdrfields) == 3 and hdrfields[0] == 'begin':
  79.             
  80.             try:
  81.                 int(hdrfields[1], 8)
  82.             except ValueError:
  83.                 pass
  84.             except:
  85.                 None<EXCEPTION MATCH>ValueError
  86.             
  87.  
  88.     if out_file is None:
  89.         out_file = hdrfields[2].rstrip()
  90.         if os.path.exists(out_file):
  91.             raise Error, 'Cannot overwrite existing file: %s' % out_file
  92.         
  93.     
  94.     if mode is None:
  95.         mode = int(hdrfields[1], 8)
  96.     
  97.     if out_file == '-':
  98.         out_file = sys.stdout
  99.     elif isinstance(out_file, StringType):
  100.         fp = open(out_file, 'wb')
  101.         
  102.         try:
  103.             os.path.chmod(out_file, mode)
  104.         except AttributeError:
  105.             pass
  106.  
  107.         out_file = fp
  108.     
  109.     s = in_file.readline()
  110.     while s and s.strip() != 'end':
  111.         
  112.         try:
  113.             data = binascii.a2b_uu(s)
  114.         except binascii.Error:
  115.             v = None
  116.             nbytes = ((ord(s[0]) - 32 & 63) * 4 + 5) / 3
  117.             data = binascii.a2b_uu(s[:nbytes])
  118.             if not quiet:
  119.                 sys.stderr.write('Warning: %s\n' % str(v))
  120.             
  121.         except:
  122.             quiet
  123.  
  124.         out_file.write(data)
  125.         s = in_file.readline()
  126.     if not s:
  127.         raise Error, 'Truncated input file'
  128.     
  129.  
  130.  
  131. def test():
  132.     '''uuencode/uudecode main program'''
  133.     import getopt as getopt
  134.     dopt = 0
  135.     topt = 0
  136.     input = sys.stdin
  137.     output = sys.stdout
  138.     ok = 1
  139.     
  140.     try:
  141.         (optlist, args) = getopt.getopt(sys.argv[1:], 'dt')
  142.     except getopt.error:
  143.         ok = 0
  144.  
  145.     if not ok or len(args) > 2:
  146.         print 'Usage:', sys.argv[0], '[-d] [-t] [input [output]]'
  147.         print ' -d: Decode (in stead of encode)'
  148.         print ' -t: data is text, encoded format unix-compatible text'
  149.         sys.exit(1)
  150.     
  151.     for o, a in optlist:
  152.         if o == '-d':
  153.             dopt = 1
  154.         
  155.         if o == '-t':
  156.             topt = 1
  157.             continue
  158.     
  159.     if len(args) > 0:
  160.         input = args[0]
  161.     
  162.     if len(args) > 1:
  163.         output = args[1]
  164.     
  165.     if dopt:
  166.         if topt:
  167.             if isinstance(output, StringType):
  168.                 output = open(output, 'w')
  169.             else:
  170.                 print sys.argv[0], ': cannot do -t to stdout'
  171.                 sys.exit(1)
  172.         
  173.         decode(input, output)
  174.     elif topt:
  175.         if isinstance(input, StringType):
  176.             input = open(input, 'r')
  177.         else:
  178.             print sys.argv[0], ': cannot do -t from stdin'
  179.             sys.exit(1)
  180.     
  181.     encode(input, output)
  182.  
  183. if __name__ == '__main__':
  184.     test()
  185.  
  186.